<?php
/**
 * Nadëb (Makú-Nadëb)
 * 
 * @author     Mateus Martins <mateusweb@gmail.com>
 * @copyright  Copyright 2010 mateusweb.com.br
 * @license    http://www.gnu.org/licenses/gpl.html | GPL
 * @package    Nadeb
 * @version    1.0.0
 */


/**
 * @see Zend_Loader_Autoloader
 */
require("Zend/Loader/Autoloader.php");


/**
 * Class Nadeb_Bootstrap
 * Inicia a api do ZendFramework
 * 
 * @category   Nadeb
 * @package    Nadeb_Bootstrap
 * @copyright  Copyright 2010 mateusweb.com.br
 * @license    http://www.gnu.org/licenses/gpl.html | GPL
 */
class Nadeb_Bootstrap
{
	/**
	 * Construtor da classe, registra os namespaces que são utilizados no projeto e deve ser
	 * alterado sempre que uma lib. ou module novo for adicionado.
	 * 
	 * @return void
	 */
	public function __construct()
	{
		$autoloader = Zend_Loader_Autoloader::getInstance();
		$autoloader->registerNamespace("Nadeb");
		$autoloader->registerNamespace("Admin");
		$autoloader->registerNamespace("Default");
		
		unset($autoloader);
	}
	
	/**
	 * Registra uma instancia do banco de dados para ser usada no decorrer do peojeto
	 * 
	 * @param string $_environment ambiente de conexão do banco de dados
	 * @return Nadeb_Bootstrap
	 */
	public function registry_db($_environment)
	{
		$config = new Zend_Config_Ini("./application/ini/db/config.ini", $_environment);

		if( $config->db->config->username )
		{
			$db     = Zend_Db::factory($config->db->adapter, $config->db->config->toArray());
			$db->query("SET NAMES 'utf8'");
			$db->setFetchMode(Zend_Db::FETCH_ASSOC);
			Zend_Db_Table::setDefaultAdapter($db); 
			Zend_Registry::set('db',$db);
			
			unset($db);
		}
		unset($config);
		
		return $this; 
	}
	
	/**
	 * Inicialica o suporte MVC do ZendFramework e seta a pasta onde estão os templates do projeto
	 * 
	 * @return Nadeb_Bootstrap
	 */
	public function start_mvc()
	{
		Zend_Layout::startMvc( './application/templates' );
		
		$view = Zend_Layout::getMvcInstance()->getView();
		$view->doctype('XHTML1_STRICT');
		
		unset($view);
		
		return $this; 
	}
	
	/**
	 * inicializa a aplicação
	 * 
	 * @param string $_server apache || iis >Define se vai ou não usar o rewrite no projeto
	 * 
	 * @return Nadeb_Bootstrap
	 */
	public function start_app($_server = 'apache')
	{
		$apiROOT = substr($_SERVER['PHP_SELF'], 0,strpos($_SERVER['PHP_SELF'], 'index.php'));
		define( 'ROOT',substr( $apiROOT,0,strlen($apiROOT) - 1) );
		
		if( $_server == 'apache' )
			$baseUrl = substr($_SERVER['PHP_SELF'], 0,strpos($_SERVER['PHP_SELF'], 'index.php'));
		else
			$baseUrl = "/index.php";
			
		$front = Zend_Controller_Front::getInstance();
		$front->setBaseUrl();
		$front->setBaseUrl( $baseUrl );
		$front->addModuleDirectory('./application/modules/');
		$front->setControllerDirectory(array
		(
			'default'  => './application/modules/Default/Controllers/',
			'admin'    => './application/modules/Admin/Controllers/',
		));
		$front->throwExceptions(true);
		$front->dispatch();
		
		unset($front);
		
		return $this; 
	}
}